perm filename COPY.LSP[W82,JMC] blob sn#648971 filedate 1982-03-24 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	copy.lsp[w82,jmc]	speed tests for copy
C00004 ENDMK
CāŠ—;
;;;copy.lsp[w82,jmc]	speed tests for copy

(defun copy1 (u) (if (null u) u (cons (car u) (copy1 (cdr u)))))

(defun copy2 (u) (if (null u)
		     u
		     ((lambda (z) (copy2a z z))
		      (cons (car u) (cdr u)))))

(defun copy2a (ans z)
       (if (null (cdr z))
	   ans
	   ((lambda (w) (copy2a ans (cdr (rplacd z w))))
	    (cons (cadr z) (cddr z)))))

(defun copy3 (x) (if (atom x)
		     x
		     ((lambda (z) (copy3a z z))
		      (cons (copy3 (car x)) (cdr x)))))

(defun copy3a (ans z)
       (if (atom (cdr z))
	   ans
	   ((lambda (w) (copy3a ans (cdr (rplacd z w))))
	    (cons (copy3 (cadr z)) (cddr z)))))

(copy1 '(a b c))
(copy2 '(a b c))
(copy3 '(a b c))
(copy3 '((a.b).(c.d)))